From 25111414504b613f1ff38c518a64a4115dfff623 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 13 Apr 2017 14:40:08 -0700 Subject: [PATCH] Relax overly strict asserts in dependency queue Don't actually need to assert that these are unique, it works both ways and we can have flavorful dependency graphs which otherwise trigger the assertions. Closes #3902 --- src/cargo/util/dependency_queue.rs | 4 ++-- tests/test.rs | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/cargo/util/dependency_queue.rs b/src/cargo/util/dependency_queue.rs index 1514585d9..1b054428b 100644 --- a/src/cargo/util/dependency_queue.rs +++ b/src/cargo/util/dependency_queue.rs @@ -83,10 +83,10 @@ impl DependencyQueue { let mut my_dependencies = HashSet::new(); for dep in dependencies { - assert!(my_dependencies.insert(dep.clone())); + my_dependencies.insert(dep.clone()); let rev = self.reverse_dep_map.entry(dep.clone()) .or_insert_with(HashSet::new); - assert!(rev.insert(key.clone())); + rev.insert(key.clone()); } &mut slot.insert((my_dependencies, value)).1 } diff --git a/tests/test.rs b/tests/test.rs index 94ac33a00..fbbf02667 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -3005,3 +3005,25 @@ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured ")); } + +#[test] +fn cyclic_dev() { + let p = project("foo") + .file("Cargo.toml", r#" + [project] + name = "foo" + version = "0.1.0" + + [dev-dependencies] + foo = { path = "." } + "#) + .file("src/lib.rs", r#" + #[test] fn test_lib() {} + "#) + .file("tests/foo.rs", r#" + extern crate foo; + "#); + + assert_that(p.cargo_process("test").arg("--all"), + execs().with_status(0)); +} -- 2.30.2